package com.wandong.cinema;

import com.wandong.cinema.entity.User;
import com.wandong.cinema.service.UserService;
import com.wandong.cinema.service.impl.UserServiceImpl;
import com.wandong.cinema.util.InputUtil;
import com.wandong.cinema.util.LogUtil;

import java.text.SimpleDateFormat;
import java.util.Date;

public class Main {
    private static final UserService userService = new UserServiceImpl();
    private static final SimpleDateFormat SDF = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    public static void main(String[] args) {
        System.out.println("=== 万东电影院管理系统 ===");
        System.out.println("系统启动时间: " + SDF.format(new Date()));
        LogUtil.log("系统启动");
        
        // 显示系统信息
        showSystemInfo();
        
        // 进入登录流程
        login();
    }

    private static void showSystemInfo() {
        System.out.println("\n系统功能说明:");
        System.out.println("- 管理员: 用户管理、日志查看");
        System.out.println("- 经理: 影片管理、排片管理、销售统计");
        System.out.println("- 前台: 售票、退票、查询");
        System.out.println("默认管理员账号: admin, 密码: ynuinfo#777");
    }

    private static void login() {
        while (true) {
            System.out.println("\n=== 用户登录 ===");
            System.out.print("请输入用户名: ");
            String username = InputUtil.inputString();
            
            // 支持退出系统
            if (username.equals("exit")) {
                System.out.println("系统退出");
                LogUtil.log("系统退出");
                System.exit(0);
            }
            
            System.out.print("请输入密码: ");
            String password = InputUtil.inputString();

            try {
                User user = userService.login(username, password);
                if (user != null) {
                    System.out.println("登录成功！欢迎回来，" + username);
                    user.showMenu(); // 调用对应角色的菜单（多态）
                    // 退出菜单后回到登录界面
                    System.out.println("返回登录界面");
                    LogUtil.log("用户退出: " + username);
                }
            } catch (Exception e) {
                System.out.println("登录失败: " + e.getMessage());
                LogUtil.log("登录失败: " + username + ", 原因: " + e.getMessage());
                
                System.out.print("是否继续登录(y/n): ");
                if (!InputUtil.inputBoolean()) {
                    System.out.println("系统退出");
                    LogUtil.log("系统退出");
                    System.exit(0);
                }
            }
        }
    }
}
